"""
协程并发爬取笔趣阁小说网站
"""
import asyncio
import os

import aiohttp

from bqg_reptile import BQGClient

client = BQGClient()

semaphore = asyncio.Semaphore(10)    #构建锁对象

# [(章节网址,章节标题),(章节网址,章节标题)]  枚举之后[(1,(章节网址,章节标题))]  对其进行拆包就能得到序号和每一页的信息
urls = enumerate(client.get_pages('/index/15944/'))
# print([i for i in urls])
# print(urls[1])

async def main():
    async with aiohttp.ClientSession(headers=client.session.headers) as session:      #创建异步请求的会话对象
        tasks = [client.async_download_page('万相之王',i,page[0],page[1],session,semaphore) for i,page in urls]
        await asyncio.gather(*tasks)

asyncio.run(main())

"""
合并小说
1、得到临时文件下的所有文件，并且将文件名称以'_'做分割 得到每一个文件和他的序号
2、对文件进行排序  按照第一个元素排序
3、打开写入的文件夹准备写入文件
4、循环排序好的文件
5、依次打开小说文件读取内容
6、写入小说内容到写入文件
7、刷新文件

"""
files = [file.split('_') for file in os.listdir('temp')]    #os.listdir('temp')得到临时文件夹下的所有文件
files.sort(key=lambda x:int(x[0]))
with open(os.path.join(client.download_path,'万相之王.txt'),'w',encoding='utf-8') as wf:
    for file in files:
        with open(os.path.join('temp','_'.join(file)),'r',encoding='utf-8') as rf:
            wf.write(rf.read() + '\n')
            wf.flush()
print('完成')